package cn.px.dao.dto.upms;

import cn.px.common.bean.BaseDTO;
import cn.px.common.validation.group.AddGroup;
import cn.px.common.validation.group.UpdateGroup;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * @Description 部门表DTO
 * @author 品讯科技
 * @date 2024-08
 * @Version Copyright (c) 2019,北京乾元坤和科技有限公司 All rights reserved.
 */
@Data
@Accessors(chain = true)
public class SysDeptDTO extends BaseDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * $column.comments
     */
    @NotNull(groups = {UpdateGroup.class}, message = "ID不能为空")
    private String deptId;

    private List<String> deptIdList;


    /**
     * 祖先节点
     */
    private String ancestor;

    /**
     * 祖先节点
     */
    private List<String> ancestorList;

    /**
     * 后代节点
     */
    private String descendant;

    /**
     * 祖先节点
     */
    private List<String> descendantList;

    /**
     * 编码-通过编码查下指定部门特殊功能，同一个部门的功能会不同，同一个部门所属功能不同
     */
    private String code;

    /**
     * 部门性质，指定部门是什么性质部门，用来确定是项目部还是小组，用来区分不同部门的
     */
    private String nature;

    /**
     * 部门编码
     */
    private String deptCode;
    /**
     * 部门名称
     */
    @NotNull(groups = {AddGroup.class, UpdateGroup.class}, message = "部门名称不能为空")
    private String name;
    /**
     * 类型 1：公司 2：职能部门
     */
    private Integer type;
    /**
     * 排序
     */
    private Integer sort;

    /**
     * 是否关闭部门
     */
    private Boolean closeDept;

    /**
     * 币种
     */
    private Integer moneyType;
    /**
     * 汇率
     */
    private BigDecimal exchangeRate;

    /**
     * 等级，等级越高则值越小
     */
    private Integer rank;

    /**
     * 是否删除  -1：已删除  0：正常
     */
    private Boolean delFlag;
    /**
     * $column.comments
     */
    private String parentId;

    /**
     * 父名称
     */
    private String parentName;

    /**
     * 维修负责人
     */
    private List<String> repairUserIds;

    /**
     * 是否包含本级
     */
    private Boolean includeMy;

    /**
     * 国家/项目代码
     */
    private String countryCode;

    private List<String> natureList;

}
